perm filename C[GEO,BGB]1 blob sn#001298 filedate 1972-10-28 generic text, type T, neo UTF8
00100	; ALTERNATE PDP-10 MNEMONICS.
00200		OPDEF LIP[HLR]↔		OPDEF LAP[HRR]
00300		OPDEF DIP[HRLM]↔	OPDEF DAP[HRRM]
00400		
00500		OPDEF LIPZ	[HLRZ]
00600		OPDEF LAPZ	[HRRZ]
00700		OPDEF DIPZ	[HRLZM]
00800		OPDEF DAPZ	[HRRZM]
00900		
01000		OPDEF SLIP	[HLL]
01100		OPDEF SLAP	[HRL]
01200		OPDEF STIP	[HLLM]
01300		OPDEF STAP	[HLRM]
01400		
01500		OPDEF SLIPZ	[HLLZ]
01600		OPDEF SLAPZ	[HRLZ]
01700		OPDEF STIPZ	[HLLZM]
01800		OPDEF STAPZ	[HLRZM]
01900		
02000		OPDEF ZIP[HRRZS]↔	OPDEF ZAP[HLLZS]
02100		OPDEF WIP[HRROS]↔	OPDEF WAP[HRRZS]
02200		
02300		OPDEF NIP	[HLRE]
02400		OPDEF NAP	[HRRE]
02500		OPDEF NIM 	[HRREI]
02600		OPDEF LIM    	[HRRI]
02700		OPDEF SLIM   	[HRLI]
02800		
02900		OPDEF CAR[HLRZ]↔	OPDEF CDR[HRRZ]
03000		OPDEF LAC[MOVE]↔	OPDEF DAC[MOVEM]
03100	 
03200		OPDEF GO 	[JRST]
03300		OPDEF LIMZ	[MOVEI]
03400		OPDEF SLIMZ	[MOVSI]
03500	
03600		OPDEF FIXX	[FIX 233000]
03700		OPDEF FLOAT	[FSC 233]
03800		DEFINE FLIM(AC,R)<HRLEI AC,(<R>)>;FLOATING IMMEDIATE.
03900	
04000		OPDEF LACN[MOVN]↔	OPDEF DACN[MOVNM]
04100		OPDEF LACM[MOVM]↔	OPDEF DACM[MOVMM]
04200		OPDEF SAS[CAME]↔	OPDEF SAD[CAMN]
     

00100	; SAIL LIKE SUBROUTINE LINKAGE.
00200		↓P ←← 17
00300		DEFINE SUBR(NAME){INTERN NAME↔↓NAME: ;}
00400		DEFINE CALL(NAME,X1,X2,X3,X4){
00500		IFDIF <> <X1> {PUSH P,X1
00600		IFDIF <> <X2> {PUSH P,X2
00700		IFDIF <> <X3> {PUSH P,X3
00800		IFDIF <> <X4> {PUSH P,X4}}}}
00900		PUSHJ P,NAME}
01000	
01100	;ARGUMENT FETCH.
01200		DEFINE ARG1<-1(17)>
01300		DEFINE ARG2<-2(17)>
01400		DEFINE ARG3<-3(17)>
01500		DEFINE ARG4<-4(17)>
01600	
01700	;CALL AND RETURN VALUE.
01800		DEFINE SETQ (VAR,LIST){
01900		CALL(LIST)
02000		DAC 1,VAR}
02100	
02200	;RETURN FROM AN N-ARGUMENT SUBROUTINE CALL.
02300		DEFINE POP0J <POPJ 17,>
02400		↓POP1J.: SUB 17,[XWD 2,2]↔GO @2(17)↔ DEFINE POP1J<GO POP1J.>
02500		↓POP2J.: SUB 17,[XWD 3,3]↔GO @3(17)↔ DEFINE POP2J<GO POP2J.>
02600		↓POP3J.: SUB 17,[XWD 4,4]↔GO @4(17)↔ DEFINE POP3J<GO POP3J.>
02700		↓POP4J.: SUB 17,[XWD 5,5]↔GO @5(17)↔ DEFINE POP4J<GO POP4J.>
02800	
02900		FOR @$ I←1,4{
03000		DEFINE RET$I(R){IFDIF<><R><LAC 1,R>↔GO RET$I$.}
03100		↓RET$I$.: SUB P,[XWD I+1,I+1]↔GO @I+1(17)}
03200		DEFINE RET0(R){IFDIF<><R><LAC 1,R>↔POPJ P,}
03300	
03400	;ACCUMULATOR TRANSPARENCY.
03500		FOR @$ I←0,17{↓AC$I: 0↔}
03800		DEFINE SAVAC $(N){LAC[XWD 2,AC2]↔BLT AC$N}
03900		DEFINE GETAC (N){LAC[XWD AC2,2]↔BLT N}
04000	
04100	;MACROS FOR ALLOCATING AND NAMING WORKING SPACE.
04200		DEFINE ACCUMULATORS(LIST){ACPTR←←2
04300		FOR AC⊂(LIST)<AC←ACPTR↔ACPTR←←ACPTR+1↔>}
04400		DEFINE DECLARE (LIST){
04500		FOR VARNAM⊂(LIST)<VARNAM: 0↔>}
04600	
04700	;FATAL ERROR MESSAGE.
04800		DEFINE FATAL(STR){PUSHJ P,FATAL.↔ASCIZ/STR/}
04900	FATAL.:	OUTSTR[ASCIZ/
05000	FATAL - /]↔OUTSTR @(17)↔INCHRW↔GO .-1↔LIT